
import router from '@ohos.router'
import { UserModel } from '../../models/UserModel'

export const USER_KEY = 'interview_user'

// 白名单
const WHITE_LIST = ['pages/LoginPage', 'pages/Home']

/**
 * 访问权限工具类
 */
export class Auth {
  // 1. 用户信息持久化
  static initLocalUser(){
    PersistentStorage.PersistProp(USER_KEY, '{}')
  }

  // 2. 获取用户
  static getUser(){
    const data = AppStorage.Get(USER_KEY) as string || '{}'
    return JSON.parse(data) as UserModel
  }

  // 3. 设置用户
  static setUser(user: UserModel){
    AppStorage.Set(USER_KEY, JSON.stringify(user))
  }

  // 4. 删除用户
  static delUser(){
    AppStorage.Set(USER_KEY, '{}')
  }

  // 5. 用户访问页面控制
  static pushUrl(options: router.RouterOptions){
    // 5.1 获取用户数据
    const user =  this.getUser()
    // 5.2 判断
    // 如果没有token且不在白名单, 拦截去登录页面
    if(!WHITE_LIST.includes(options.url) && !user.token){
      return router.pushUrl({
        url: 'pages/LoginPage',
        params: {
          ...options.params,
          // 回跳地址属性
          return_url: options.url
        }
      })
    }
    // 其它情况正常放行
    return router.pushUrl(options)
  }
}